<?php
class validate {
	public function validateEmail($email) {
		$pattern = "/^[a-z0-9\å\ä\ö._-]+@[a-z0-9\å\ä\ö.-]+\.[a-z]{2,6}$/i";
		if (preg_match($pattern, $email)) {
			return true;
		}
		return false;
	}

	// Validering av Personnummer på formaten XXXXXX-XXXX, XXXXXXXXXX, XXXXXXXX-XXXX och XXXXXXXXXXXX
	// Glöm inte luhn-algoritmen
	// Om personnummer följer giltigt format bör ett standardformat returneras annars fel, false, exception eller liknande
	public function validateSocialSecurityNumber($socialSecurityNumber) {

		if (preg_match("/^[0-9]{6}-[0-9]{4}$/", $socialSecurityNumber) || preg_match("/^[0-9]{10}$/", $socialSecurityNumber) || preg_match("/^[0-9]{8}-[0-9]{4}$/", $socialSecurityNumber) || preg_match("/^[0-9]{12}$/", $socialSecurityNumber)) {

			$socialSecurityNumber = str_replace('-', '', $socialSecurityNumber);

			//Om fler än 10 siffror, plocka ur de 10 sista
			if (strlen($socialSecurityNumber) > 10) {
				$socialSecurityNumber = substr($socialSecurityNumber, -10);
			}

			//Luhn
			$sum = 0;

			for ($i = 0; $i < strlen($socialSecurityNumber) - 1; $i++) {
				$tmp = substr($socialSecurityNumber, $i, 1) * (2 - ($i & 1));
				//växla mellan 212121212
				if ($tmp > 9)
					$tmp -= 9;
				$sum += $tmp;
			}

			//Extrahera en-talet
			$sum = (10 - ($sum % 10)) % 10;

			//Om sista siffran matchar
			if ((substr($socialSecurityNumber, -1, 1) == $sum)) {
				return $socialSecurityNumber;
			}

			return false;
		}

		return false;
	}

	// Validering av datum på formaten
	// 1999-10-01
	// 99-10-01
	// 991001
	// Om datumet följer giltigt format bör ett standardformat returneras annars fel, false, exception eller liknande
	public function validateDate($date) {
		if (preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $date) || preg_match("/^[0-9]{2}-[0-9]{2}-[0-9]{2}$/", $date) || preg_match("/^[0-9]{6}$/", $date)) {
			$date = str_replace('-', '', $date);
			if (strlen($date) > 6) {
				$date = substr($date, -6);
			}
			return $date;
		}
		return false;
	}

	// Filtrerad textsträng för:
	// Sträng med tillåten visning av viss HTML kod men ej javascript
	// Sträng utan visning av HTML och javascript
	public function validateString($html, $string) {
		if ($html == false) {
			$string = strip_tags($string, '');
			return $string;
		} else {
			$string = strip_tags($string, '<a><b><i><u><img><strong><em><blockquote><acronym><cite>');
			return $string;
		}
	}

	public function validatePassword($password) {
		if (preg_match("/^[a-z0-9!?@#]{6,12}$/i", $password)) {
			return true;
		}
		return false;
	}

	public function validateUsername($username) {
		if (preg_match("/^[a-z0-9-_]{4,12}$/i", $username)) {
			return true;
		}
		return false;
	}

	public function validateNumber($number) {
		if (is_numeric($number)) {
			return true;
		}
		return false;
	}

}
